﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace API_CIC.CapaDatos
{
    public class cProyectosDatos
    {
      
        public static void Ingresar(SGAPFPROYECTO p_proyecto)
        {
            System.Nullable<int> p1 = p_proyecto.ID_PROYECTO;
            p_proyecto.ID_PROYECTO = p1.GetValueOrDefault();
            
            _datacontext.SGAPFPROYECTOs.InsertOnSubmit(p_proyecto);

            try
            {
                _datacontext.SubmitChanges();
                _datacontext.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, _datacontext.SGAPFPROYECTOs);   
            }
             catch (Exception ex)
            {
                 
                throw new ITCRException("cGestionProyectos: :Ingresar: :Ocurrió un error.", ex);
            }
        }

        public static SGAPFPROYECTO GetProyecto(int p_proy)
        {
            IOrderedQueryable<SGAPFPROYECTO> bs = (IOrderedQueryable<SGAPFPROYECTO>)from pro in _datacontext.SGAPFPROYECTOs
                                                                                    where pro.ID_PROYECTO == p_proy
                                                                                    select pro;
            return bs.First();
        }

        public static void Modificar(SGAPFPROYECTO p_proyecto)
        {
            var proyecto = (from p in _datacontext.SGAPFPROYECTOs
                            where p.ID_PROYECTO == p_proyecto.ID_PROYECTO
                            select p).Single();
            var escuela = (from es in _datacontext.SGAPFESCUELAs
                           where es.ID_ESCUELA == p_proyecto.COD_ESCUELA
                           select es).Single();
            var coordinador = (from coo in _datacontext.SGAPFUSUARIOs
                               where coo.ID_CEDULA == p_proyecto.COD_COORDINADOR
                               select coo).Single();
            proyecto.SGAPFESCUELA = escuela;
            proyecto.SGAPFUSUARIO = coordinador;
            proyecto.FEC_FIN = p_proyecto.FEC_FIN;
            proyecto.FEC_INICIO = p_proyecto.FEC_INICIO;
            proyecto.NOM_PROYECTO = p_proyecto.NOM_PROYECTO;
            proyecto.TXT_ABSTRACT = p_proyecto.TXT_ABSTRACT;
            proyecto.TXT_CENTRO = p_proyecto.TXT_CENTRO;
            proyecto.TXT_ESTADO = p_proyecto.TXT_ESTADO;
            proyecto.TXT_PROGRAMA = p_proyecto.TXT_PROGRAMA;
            proyecto.TXT_RESUMEN = p_proyecto.TXT_RESUMEN;
            proyecto.TXT_TIPO = p_proyecto.TXT_TIPO;
            proyecto.TXT_URL = p_proyecto.TXT_URL;
            try
            {
                _datacontext.SubmitChanges();
            }
            catch (Exception ex)
            {
                throw new ITCRException("cGestionProyecctos: :Modificar: :Ocurrió un error.", ex);
            }
        }



        private static readonly LinqClasesDataContext _datacontext = new LinqClasesDataContext();


        internal static IEnumerator<SGAPFPROYECTO> GetProyectosCoordinador(int p_coordinador)
        {
            var proyecto = (from p in _datacontext.SGAPFPROYECTOs
                            where p.COD_COORDINADOR == p_coordinador
                            select p);
            return proyecto.GetEnumerator();
        }

        internal static IEnumerator<SGAPFUSUARIO_ROL> GetProyectosRoles(int p_usu)
        {
            var usurol = (from ur in _datacontext.SGAPFUSUARIO_ROLs
                            where ur.COD_USUARIO == p_usu
                            select ur);
            return usurol.GetEnumerator();
        }
    }
}